﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using FluentValidation;
using FluentValidation.Internal;
using FluentValidation.Mvc;
using FluentValidation.Validators;
using Home.Utilities.Validation.ExtensionMethods;
namespace Home.WebUI.Areas.Example.Models.Validation
{
    public class UserInfoValidator : AbstractValidator<UserInfo>
    {
        public UserInfoValidator()
        {
            // 在这里写验证规则，比如：
            // Cascade(FluentValidation.CascadeMode.StopOnFirstFailure) 可以指定当前 CustomerValidator 的验证模式，可重写全局验证模式
            //RuleFor为定义有效性规则的指定属性
            //Cascade指定的级联模式失败。（StopOnFirstFailure不会执行下一条，Continue会）如果设置为停止然后执行规则将停止一旦链中的第一次验证程序将失败。如果设置，在链中 '继续' 然后所有验证程序将执行无论失败。
            //WithLocalizedName指定的错误消息的本地化的名称,也就是{PropertyName}值
            RuleFor(u => u.UserName)
                .NotEmpty().WithLocalizedName(() => "用户名").UserName();
                //.Matches("^[a-zA-Z0-9_-]{4,16}$").WithMessage("4-16位字符，只能由英文、数字及“_”、“-”组成");
            RuleFor(u => u.Email).EmailAddress().NotEmpty().WithLocalizedName(() => "邮箱");
            RuleFor(u => u.VPassWord).Equal(u => u.PassWord).WithLocalizedName(() => "确认密码");
            RuleFor(u => u.PassWord).NotEmpty().WithLocalizedName(() => "密码");
            // 更多...
            // 更多...
        }
    }
}